/*
 * Copyright (c) 2018. J4dream created
 */

package com.j4dream.property.leetcode.basic;

import java.util.Arrays;

public class SortAndSearch {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        if (n > 0) {
            for (int i = m, j = 0; i < m + n; i++, j++) {
                nums1[i] = nums2[j];
            }
        }
        Arrays.sort(nums1);

        // 另一种方法 新建临时数组 new int[m+n] 然后复制数组。
    }

    private boolean isBadVersion(int n) {
        return true;
    }

    // 你是产品经理，目前正在带领一个团队开发新的产品。不幸的是，你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的，
    // 所以错误的版本之后的所有版本都是错的。
    //
    // 假设你有 n 个版本 [1, 2, ..., n]，你想找出导致之后所有版本出错的第一个错误的版本。
    public int firstBadVersion(int n) {
        int min = 1, max = n, mid = 0;
        while (min <= max) {
            // mid = (min + max) / 2 这里超出限制
            mid = min + (max - min) / 2;
            if (isBadVersion(mid)) {
                max = mid - 1;
            } else {
                min = mid + 1;
            }
        }
        return min;
    }
}
